package main

/*
https://mp.weixin.qq.com/s/VANSVcLtCLC0gWmEsa8sFw
在 Golang 语言中，接口类型定义了一组方法签名，接口类型的值可以保存实现了这些方法的任何值。
Golang 语言的接口是隐式实现的，它不像其他某些编程语言，使用 implements 关键字显式实现接口，Golang 语言没有 implements 关键字，一个类型只要实现接口定义的所有方法，
就等于实现了该接口，所以也称为 Duck typing。

在 Golang 语言中，我们使用结构体和方法可以很完美的实现需求。为什么还要使用接口呢？实际上，接口是一个工具，是否选择使用接口，取决于我们自己，它可以使我们的代码更优雅，更简洁，更具可读性。
*/

type Cat struct{
}

func (c Cat) Say() string {
    return "i'm cat"
}


type Dog struct{
}

func (d Dog) Say() string{
    return "i'm dog"
}

func TestSay(t *testing.T){
    c:=Cat{}
    t.Log("Cay say:",c.Say())
    d:=Dog{}
    t.Log("Dog say:", d.Say())
}




func main(){
    fmt.Println("接口")
}